package com.tianjin.design.strategy;

/**
 *
 * @author tianjin
 *
 * 2023年4月10日
 * TODO 策略模式： 行为型模式
 *
 * 策略模式作为一种软件设计模式，指对象有某个行为，但是在不同的场景中，该行为有不同的实现算法。
 *
 * 组成：
 *  —抽象策略角色： 策略类，通常由一个接口或者抽象类实现。
	—具体策略角色：包装了相关的算法和行为。
	—环境角色：持有一个策略类的引用，最终给客户端调用。

 * 应用场景：
		1、 多个类只区别在表现行为不同，可以使用Strategy模式，在运行时动态选择具体要执行的行为。
		2、 需要在不同情况下使用不同的策略(算法)，或者策略还可能在未来用其它方式来实现。
		3、 对客户隐藏具体策略(算法)的实现细节，彼此完全独立。

	客户端必须知道所有的策略类，并自行决定使用哪一个策略类。
 */
public class Test {


	public static void main(String[] args) {
		// 客户端需要明确要使用的算法
		CashContext cashContext = new CashContext(new CashA());
		cashContext.context();
	}
}
